package it.luigiarpino.alt2jsim.utility;

import java.awt.*;

/*
 * Un gestore di Layout che dispone tutti i componento
 * ai lati di un asse centarale. <br>
 * Utile per realizzare un form. <br>
 */
public class FormLayout implements LayoutManager
{  

	private int left;
	private int right;
	private int height;
	private static final int GAP = 6;

	public Dimension preferredLayoutSize(Container parent)
	{  
		Component[] components = parent.getComponents();
		left = 0;
		right = 0;
		height = 0;
		for (int i = 0; i < components.length; i += 2)
		{
			Component cleft = components[i];
			Component cright = components[i + 1];
			Dimension dleft = cleft.getPreferredSize();
			Dimension dright = cright.getPreferredSize();
			left = Math.max(left, dleft.width);
			right = Math.max(right, dright.width);
			height = height + Math.max(dleft.height,dright.height);
		}      
		return new Dimension(left + GAP + right, height);
	}

	public Dimension minimumLayoutSize(Container parent)
	{  
		return preferredLayoutSize(parent);
	}

	public void layoutContainer(Container parent)
	{  
		preferredLayoutSize(parent); // sets left, right

		Component[] components = parent.getComponents();

		Insets insets = parent.getInsets();
		int xcenter = insets.left + left;
		int y = insets.top;

		for (int i = 0; i < components.length; i += 2)
		{
			Component cleft = components[i];
			Component cright = components[i + 1];

			Dimension dleft = cleft.getPreferredSize();
			Dimension dright = cright.getPreferredSize();

			int height = Math.max(dleft.height,	dright.height);

			cleft.setBounds(xcenter - dleft.width, y + (height -
					dleft.height) / 2, dleft.width, dleft.height);

			cright.setBounds(xcenter + GAP, y + (height 
					- dright.height) / 2, dright.width, dright.height);
			y += height;
		}
	}

	public void addLayoutComponent(String name, Component comp)
	{

	}

	public void removeLayoutComponent(Component comp)
	{

	}



}
